<?php
session_start();
require_once __DIR__.'/../../utils/checkTokenUtils.php';
require_once __DIR__.'/../../model/UserModel.php';
require_once __DIR__.'/../../utils/PasswordUtils.php';
use model\UserModel;

// 获取并清理表单数据
$username = trim($_POST['username'] ?? '');
$password = trim($_POST['password'] ?? '');
$confirmPassword = trim($_POST['confirmPassword'] ?? '');
$realName = trim($_POST['realName'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$email = trim($_POST['email'] ?? '');
$errors = [];

// 1. 用户名验证（3-10位字符）
if (empty($username) || strlen($username) < 3 || strlen($username) > 10) {
    $errors[] = '用户名需为3-10位字符';
}

// 2. 密码验证（4-16位字符）
if (empty($password) || strlen($password) < 4 || strlen($password) > 16) {
    $errors[] = '密码需为4-16位字符';
}

// 3. 确认密码验证（与密码一致）
if ($password !== $confirmPassword) {
    $errors[] = '确认密码与密码不一致';
}

// 4. 真实姓名验证（非空）
if (empty($realName)) {
    $errors[] = '真实姓名不能为空';
}

// 5. 手机号验证（11位数字，1开头）
if (!preg_match('/^1[3-9]\d{9}$/', $phone)) {
    $errors[] = '手机号格式不正确';
}

// 6. 邮箱验证（标准邮箱格式）
if (!preg_match('/^[\w\-]+@[\w\-]+\.[a-z]{2,}$/i', $email)) {
    $errors[] = '邮箱格式不正确';
}

// 7. 用户名唯一性检查（查询数据库）
if (empty($errors)) {
    $userModel = new UserModel();
    $existingUser = $userModel->getUserByUsername($username);
    if ($existingUser) {
        $errors[] = '用户名已存在，请更换';
    }
}

// 注册逻辑
if (empty($errors)) {
    $userModel = new UserModel();
    // 构造用户数据（默认角色为0：普通用户）
    $userData = [
        'username' => $username,
        'password' => $password,
        'name' => $realName,
        'phone' => $phone,
        'email' => $email,
        'role' => 0 // 注册用户默认为普通用户
    ];

    // 调用模型添加用户
    $result = $userModel->addUser($userData);

    if ($result > 0) {
        $_SESSION['success_message'] = '注册成功！请登录';
        header('Location: login.php');
    } else {
        $_SESSION['error_message'] = '注册失败，请重试';
        header('Location: register.php');
    }
} else {
    // 验证失败，回传错误信息
    $_SESSION['error_message'] = implode('；', $errors);
//    header('Location: register.php');
}
exit;